
: ME: : COMPILE BRANCH 4 , 0 , ;
: ?ME LATEST @ >CFA 6 + [COMPILE] LITERAL ;
: @ME ?ME COMPILE @ ; IMMEDIATE
: !ME ?ME COMPILE ! ; IMMEDIATE 

( Tests )
ME: MAKEID ( flag - id )
    IF 0 !ME 0 ELSE @ME 1+ DUP !ME THEN ;

ME: TESTME ( Storing: x true -- | Fetching: false -- x )
    TRUE = IF !ME ." Stored " @ME . ." in me." ELSE ." My value is " @ME 
    . THEN CR ;

ME: CCSP ( taskid  flag )
	?DUP 0= IF 0 !ME ." reset" CR EXIT THEN 
    @ME 2DUP 0=  -ROT  = OR 
    IF 
      !ME TRUE 
	  ." granted"
    ELSE
      DROP FALSE
	  ." denied"
    THEN CR
;


Alternative version, by Hugh Aguilar:

\ ME! and ME@ - Hugh Aguilar's Version.
CREATE <ME>  0 ,
: ME: ( -- )
  <ME> @ ABORT" *** <ME> SHOULD BE ZERO WHEN ME: EXECUTES ***"
  HERE <ME> !  0 , : ;
: ME@ ( -- )            \ RUNTIME: -- N
    <ME> @  DUP 0= ABORT" *** ME@ NOT IN A ME: DEFINITION ***"
    [COMPILE] LITERAL  COMPILE @ ; IMMEDIATE
: ME! ( -- )            \ RUNTIME: N --
    <ME> @  DUP 0= ABORT" *** ME! NOT IN A ME: DEFINITION ***"
    [COMPILE] LITERAL  COMPILE ! ; IMMEDIATE
: ; ( -- )              \ RUNTIME: --
    0 <ME> !  [COMPILE] ; ; IMMEDIATE


